package com.knife.blog.logic;

import java.util.List;

import com.knife.blog.domain.BlogInfo;
import com.knife.blog.domain.BlogUser;
import com.knife.web.tools.ActiveUser;
import com.knife.web.tools.IActiveUser;
import com.knife.web.tools.IPageList;
import com.knife.blog.logic.impl.ActiveUserImpl;

/**
 * Blog用户服务
 * 
 * @author 大峡
 * 
 */
public interface BlogUserService {
	// 用户登录
	ActiveUserImpl login(String username, String password, String ip);

	// 注册(申请)博客
	boolean register(BlogInfo blogInfo);
	
	//注册用户
	boolean register(BlogUser blogUser);
	
	//用户审核
	public boolean check(String cid);

        //生成博客
        boolean generateBlog(String cid);

	//取消审核
	public boolean unCheck(String cid);
	// /修改密码
	boolean changePassword(String username, String oldPassword,
			String newPassword);

	// /根据blogInfo的内容更改当前Blog用户信息
	boolean settingBlogInfo(BlogInfo blogInfo);

        boolean updateVisitCount(BlogInfo blogInfo);

	// 根据用户名得到用户Blog
	BlogInfo getUserBlog(String username);
	
	//根据域名得到用户blog
	BlogInfo getUserBlog(String fieldName,String value);

	// 根据用户名得到Blog信息
	BlogInfo getBlogInfo(String cid);
	
	BlogUser getBlogUser(String fieldName,String value);

	// 删除用户Blog
	boolean delBlogInfo(String cid);
	//删除用户表信息
	boolean delUserInfo (String username);
        IPageList queryUserInfo(String orderBy, int currentPage, int pageSize);
        IPageList queryUserInfo(String orderBy, int currentPage, int pageSize,int status);

        boolean updateUserInfo(BlogUser blogUser);
	/**
	 * 根据类别types及排序orderBy查询博主信息
	 * 
	 * @param types
	 *            类别
	 * @param orderBy
	 *            排序方式
	 * @param currentPage
	 *            当前页
	 * @param pageSize
	 *            每页大小
	 * @return
	 */
	IPageList queryBlogInfo(String types, String orderBy, int currentPage,
			int pageSize);

	/**
	 * 查询精品Blog信息
	 * 
	 * @param orderBy
	 *            排序方式
	 * @param currentPage
	 *            当前面
	 * @param pageSize
	 *            每页大小
	 * @return
	 */
	IPageList queryEliteBlogInfo(String orderBy, int currentPage, int pageSize);

	List getTopBlogUser(String types, int elite, String orderBy, int topNum);

	void blogInfoChange(BlogInfo blog);
	
	public BlogUser getBlogUser(String username);

	boolean add(BlogUser user);
        //add
        java.util.List getTopNewBlogInfo(String orderBy, int currentPage,int pageSize);
        boolean setBlogInfoNew(String cid,int isNew);
	java.util.List getTopEliteBlogInfo(String orderBy, int currentPage,int pageSize);
        boolean setBlogInfoElite(String cid,int elite);
        java.util.List getTopHotBlogInfo(String orderBy, int currentPage,int pageSize);
        boolean setBlogInfoHot(String cid,int isHot);
	ActiveUser login(String username, String string, String string2, String remoteAddr);
}